package com.exprecards.common.web;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import com.exprecards.common.enums.ETipoUsuario;
import com.exprecards.common.persistence.dto.ExpTbArea;
import com.exprecards.common.persistence.dto.ExpTbCentroCosto;
import com.exprecards.common.persistence.dto.ExpTbEmpresa;
import com.exprecards.common.persistence.dto.ExpTbSucursal;
import com.exprecards.common.persistence.dto.ExpTbUsuario;
import com.exprecards.common.persistence.exceptions.ExpTbUsuarioDaoException;


@ManagedBean(name = "userSessionBean")
@SessionScoped
public class UserSessionBean implements Serializable{

	private static final long serialVersionUID = 1L;

	private boolean login;
	
	private ExpTbUsuario usuario;
	private Map<String,Boolean> permisos = new HashMap<String, Boolean>();
	
	private ExpTbEmpresa empresa;
	private ExpTbCentroCosto centroCosto;
	private ExpTbSucursal sucursal;
	
	ETipoUsuario tipoUsuario;
	private String tipoUsuarioText="";
	
	private float presupuestoDisponible;
	
	private int idEmpresaAdmin;
	
	private ExpTbArea areaUsuario;
	
	
	//lista compartida entre session
	
	
	public UserSessionBean() throws ExpTbUsuarioDaoException{
		
		//filas = GamTbPgDaoFactory.create().retornoDinamico();
		
		//DAOFactory.getGamTbPgDao().insert(pg);
		
	}
	
	
	
	public ExpTbEmpresa getEmpresa() {
		return empresa;
	}




	public void setEmpresa(ExpTbEmpresa empresa) {
		this.empresa = empresa;
	}
	
	
	/**
	 * @return the login
	 */
	public boolean isLogin() {
		return login;
	}

	/**
	 * @param login the login to set
	 */
	public void setLogin(boolean login) {
		this.login = login;
	}


	
	public void addPermiso(String key,Boolean valor){
	
		permisos.put(key, valor);
		
	}
	
	/*public boolean tienePermiso(String permiso) {
        boolean retorno = false;
        
        for (String permission : permisos) {
        	
            if (permission.equalsIgnoreCase(permiso)) {
                retorno = true;
                break;
            }
        }

        return retorno;
    }*/

	/**
	 * @return the usuario
	 */
	public ExpTbUsuario getUsuario() {
		return usuario;
	}

	/**
	 * @param usuario the usuario to set
	 */
	public void setUsuario(ExpTbUsuario usuario) {
		this.usuario = usuario;
	}



	public ETipoUsuario getTipoUsuario() {
		return tipoUsuario;
	}



	public void setTipoUsuario(ETipoUsuario tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}



	public ExpTbCentroCosto getCentroCosto() {
		return centroCosto;
	}



	public void setCentroCosto(ExpTbCentroCosto centroCosto) {
		this.centroCosto = centroCosto;
	}



	public ExpTbSucursal getSucursal() {
		return sucursal;
	}



	public void setSucursal(ExpTbSucursal sucursal) {
		this.sucursal = sucursal;
	}



	public Map<String, Boolean> getPermisos() {
		return permisos;
	}



	public void setPermisos(Map<String, Boolean> permisos) {
		this.permisos = permisos;
	}



	public float getPresupuestoDisponible() {
		
		
		return presupuestoDisponible;
	}



	public void setPresupuestoDisponible(float presupuestoDisponible) {
		this.presupuestoDisponible = presupuestoDisponible;
	}



	public int getIdEmpresaAdmin() {
		return idEmpresaAdmin;
	}



	public void setIdEmpresaAdmin(int idEmpresaAdmin) {
		this.idEmpresaAdmin = idEmpresaAdmin;
	}



	public String getTipoUsuarioText() {
		return tipoUsuarioText;
	}



	public void setTipoUsuarioText(String tipoUsuarioText) {
		this.tipoUsuarioText = tipoUsuarioText;
	}



	public ExpTbArea getAreaUsuario() {
		return areaUsuario;
	}



	public void setAreaUsuario(ExpTbArea areaUsuario) {
		this.areaUsuario = areaUsuario;
	}

}
